package com.agileboot.domain.system.file;

import com.agileboot.common.core.page.PageDTO;
import com.agileboot.domain.system.file.db.SysFileEntity;
import com.agileboot.domain.system.file.db.SysFileService;
import com.agileboot.domain.system.file.dto.SysFileDTO;
import com.agileboot.domain.system.file.query.SysFileQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 系统文件应用服务类
 */
@Service
@RequiredArgsConstructor
public class FileApplicationService {

    private final SysFileService sysFileService;

    /**
     * 获取文件列表（分页）
     */
    public PageDTO<SysFileDTO> getFileList(SysFileQuery query) {
        Page<SysFileEntity> pageResult = sysFileService.page(query.toPage(), query.toQueryWrapper());
        
        List<SysFileDTO> dtoList = pageResult.getRecords().stream()
                .map(SysFileDTO::new)
                .collect(Collectors.toList());
        
        return new PageDTO<>(dtoList, pageResult.getTotal());
    }

    /**
     * 保存文件信息
     */
    public void saveFileInfo(SysFileEntity fileEntity) {
        // 截断过长的 MIME 类型（通常数据库字段为 VARCHAR(50)）
        if (fileEntity.getFileType() != null && fileEntity.getFileType().length() > 50) {
            fileEntity.setFileType(fileEntity.getFileType().substring(0, 50));
        }
        sysFileService.save(fileEntity);
    }
}

